package com.tgy.JUC.lock8;

import java.util.concurrent.TimeUnit;

/***
 * @ClassName: Test3
 * @Description: static 锁的是class 是全局唯一的 这里先获得锁的一定先执行
 * @Auther: 送你一块二向箔
 * @Date: 11:04 2022/3/11
 * @version : V1.0
 */
public class Test3{
    public static void main(String[] args) {
        Test3 test3 = new Test3();
        test3.bb();
    }
    public void aa(){
        //static 锁的是class 是全局唯一的 这里先获得锁的一定先执行
        new Thread(()->{Phone3.sendSms();},"A").start();
        new Thread(()->{Phone3.call();},"B").start();
    }

    //这时候也不是两把锁，因为方法是static的所以锁的的调用方法对象，所以还是锁的全局唯一的class，所以还是一把锁
    public void bb(){
        Phone3 phone1 = new Phone3();
        Phone3 phone2 = new Phone3();
        new Thread(()->{phone1.sendSms();},"A").start();
        new Thread(()->{phone2.call();},"B").start();
    }
}
class Phone3{
    public static synchronized void sendSms(){
        try {
            TimeUnit.SECONDS.sleep(1L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("sendSms");
    }
    public static synchronized void call(){
        System.out.println("call");
    }
    public  void hello(){
        System.out.println("hello");
    }
}
